<?php 


/**
 * Função responsável pelo CRUD de registro de inscrições dos servidores.
 */
class Application_Model_Login
{
    
    /** 
     * Sistema que verifica se o usuário pode ou não fazer login no sistema. 
     * 
     * @access public 
     * @param array $data 
     * @return array $result 
     */
    public function verificarLogin($post) 
    {
        $db     = Zend_Db_Table::getDefaultAdapter();
        $cpf    = (string)(float)$post['cpf'];
        $senha  = (string)(float)$post['senha'];
        
        $adapter = new Zend_Auth_Adapter_DbTable($db,
                                                'remanejamento.tbl_reman_usuario',
                                                'nu_cpf',
                                                'ds_senha');
  
        // Preparando o adapter
        $adapter->setIdentity($cpf);
        $adapter->setCredential($senha);
  
        // Verificando a autenticidade das informações.
        $auth   = Zend_Auth::getInstance();
        $result = $auth->authenticate($adapter);
  
        
        if ($result->isValid()) {
            // Instanciando models de informações do professor logado
            $modProfessor   = new Remanejamento_Model_Professor();
            $modInscricao   = new Remanejamento_Model_Inscricao();
            
            // Buscando informações do professor logado
            $infoProfessor  = $modProfessor->completeProfessor($post['cpf']);
            
            // Buscando informações vindas da tabela logada e salvando em zend_auth
            $row = $adapter->getResultRowObject();
            $auth->getStorage()->write($row);

            
            // Salvando as informações do professor na sessão 
            $info['cpf']            = str_pad($post['cpf'], 11, "0") ;
            $info['matricula']      = $infoProfessor['matricula'];
            $info['nome']           = $infoProfessor['nome'];
            $info['endereco']       = $infoProfessor['endereco'];
            $info['tempoServico']   = $infoProfessor['tmpServico'];
            $info['estado']         = $infoProfessor['estado'];
            $info['bairro']         = $infoProfessor['bairro'];
            $info['municipio']      = $infoProfessor['municipio'];
            $info['cep']            = $infoProfessor['cep'];
            $info['email']          = $infoProfessor['email'];
            
            // Informações da localização do usuário no primeiro período
            $info['emp_cd_lotacao_1']       = $infoProfessor['emp_cd_lotacao_1'];
            $info['emp_dr']                 = $infoProfessor['emp_dr'];
            $info['tp_lotacao_1']           = $infoProfessor['tp_lotacao_1']; // 1-Urbano, 2-Rural
            $info['emp_turno']              = $infoProfessor['emp_turno'];
            $info['emp_carga_hor']          = $infoProfessor['emp_carga_hor'];
            $info['emp_lot_definitiva']     = $infoProfessor['emp_lot_definitiva'];
            $info['ds_lotacao_1']           = $infoProfessor['ds_lotacao_1'];
            
            // Informações da localização do usuário no segundo período
            $info['emp_cd_lotacao_2']      = $infoProfessor['emp_cd_lotacao_2'];
            $info['emp_dr_sec']            = $infoProfessor['emp_dr_sec'];
            $info['tp_lotacao_2']          = $infoProfessor['tp_lotacao_2']; // 1-Urbano, 2-Rural
            $info['emp_turno_sec']         = $infoProfessor['emp_turno_sec'];
            $info['emp_carga_hor_2']       = $infoProfessor['emp_carga_hor_2'];
            $info['emp_lot_definitiva_1']  = $infoProfessor['emp_lot_definitiva_1'];
            $info['ds_lotacao_2']          = $infoProfessor['ds_lotacao_2'];

            // Salvando informações do professor na etapa1 do sistema.
            $modInscricao->setSessaoInscricao('user', $info);
            
            // Informa que todos os procedimentos ocorreram corretamente.
            $retorno = array('type'             => 'success', 
                             'result'           => true); 
              
        } else { 
            $retorno = array('type'     => 'erro', 
                             'result'    => false, 
                             'flashMsg'  => "O cpf e a senha não conferem. verifique se você digitou ambas correntamente. 
                                             Caso tenha esquecido da senha, entre em contato com a SEEDF/CRE!" ); 
        } 
  
        return $retorno; 
    }
    
    
    /**
     * Função que limpa todas as informações disponíveis sobre o usuário.
     * -- Evitar que dados de outro usuário seja acessados por terceiros.
     * 
     * @return array $result
     */
    public function logout() 
    {
        try {
            // Limpando sessão do zend server...
            $namespace = new Zend_Session_Namespace();
            unset($namespace);
            
            unset($_SESSION);
            session_destroy();
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }
}